package com.dlwx.firefighting.utils;

import android.content.Context;
import android.text.TextUtils;

import com.dlwx.firefighting.R;
import com.dlwx.firefighting.bean.BaseBean;
import com.dlwx.firefighting.bean.BaseOneBean;
import com.dlwx.firefighting.bean.BasicBean;
import com.dlwx.firefighting.config.Constant;
import com.google.gson.Gson;
import com.lzy.okgo.model.Response;

import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.List;

/**
 * Created by Administrator on 2017/8/30.
 */

public class DealResult {
    private static  DealResult instance=new DealResult();

    public static DealResult getInstance(){
            return instance;
    }
    public DealResult() {
    }

    /**
     *
     * @param context
     * @param response
     * @param type
     * @param <T>
     * @return
     */
    public <T,K> List<K> dealDatas(Context context, Response<String> response, Type type){
        List<K>  datas=new ArrayList<>();
        String res=response.body().toString().trim();
        if(TextUtils.isEmpty(res)){
            ToastUtils.toastForShort(context,context.getString(R.string.empty_datas));
            return datas;
        }
        try {
            BaseBean<T,K> bean=new Gson().fromJson(res,type);
            if(bean.getCode()== Constant.SUCESS){
                if(bean.getBody()==null){
                    return  datas;
                };
                if(bean.getBody().getDatas()==null){
                    return datas;
                }
                 datas.addAll(bean.getBody().getDatas());
                if(datas.isEmpty()){
                    ToastUtils.toastForShort(context,context.getString(R.string.empty_datas));
                }
                return datas;
            }else{
                ToastUtils.toastForShort(context,bean.getRes());
                return datas;
            }
        }catch (Exception e){
            ToastUtils.toastForShort(context,context.getString(R.string.analysis_error));
            e.printStackTrace();
            return datas;
        }
    }
//    /**
//     *评论专用
//     * @param context
//     * @param response
//     * @param type
//     * @param <T>
//     * @return
//     */
//    public <T> List<T> dealComment(Context context, Response<String> response, Type type){
//        List<T>  datas=new ArrayList<>();
//        String res=response.body().toString().trim();
//        if(TextUtils.isEmpty(res)){
//            ToastUtils.toastForShort(context,"无评论信息");
//            return datas;
//        }
//        try {
//            BaseBean<T,K> bean=new Gson().fromJson(res,type);
//            if(bean.getStatus()== Constant.SUCESS){
//                 datas.addAll(bean.getData());
//                if(datas.isEmpty()){
//                    ToastUtils.toastForShort(context,"无评论信息");
//                }
//                return datas;
//            }else{
//                ToastUtils.toastForShort(context,bean.getMsg());
//                return datas;
//            }
//        }catch (Exception e){
//            ToastUtils.toastForShort(context,context.getString(R.string.analysis_error));
//            e.printStackTrace();
//            return datas;
//        }
//    }

    /**
     *
     * @param context
     * @param response
     * @param type
     * @param <T>
     * @return
     */
    public <T,K>T dealData(Context context, Response<String> response, Type type){
        T object=null;
        String res=response.body().toString().trim();
        if(TextUtils.isEmpty(res)){
            ToastUtils.toastForShort(context,context.getString(R.string.empty_datas));
            return object;
        }
        try {
            BaseBean<T,K> baseBean= new Gson().fromJson(res,type);
            if(baseBean.getCode()==Constant.SUCESS){
                object=baseBean.getBody().getData();
            }else{
                ToastUtils.toastForShort(context,baseBean.getRes());
                return object;
            }

        }catch (Exception e){
            ToastUtils.toastForShort(context,context.getString(R.string.analysis_error));
            e.printStackTrace();
            return object;
        }
        return object;
    }

    public BaseBean dealBaseRes(Context context, Response<String> response){
        String res=response.body().toString().trim();
        if(TextUtils.isEmpty(res)){
            ToastUtils.toastForShort(context,context.getString(R.string.empty_datas));
            return null ;
        }
        try {

            BaseBean bean=new Gson().fromJson(res,BaseBean.class);
            return bean;
        }catch (Exception e){
            ToastUtils.toastForShort(context,context.getString(R.string.analysis_error));
            return null ;
        }
    }

    public int deal(Context context, Response<String> response){
        int code=0;
        String res=response.body().toString().trim();
        if(TextUtils.isEmpty(res)){
            ToastUtils.toastForShort(context,context.getString(R.string.empty_datas));
            return code ;
        }
        try {
            BaseBean bean=new Gson().fromJson(res,BaseBean.class);
            if(bean!=null){
                code=bean.getCode();
                ToastUtils.toastForShort(context,bean.getRes());
            }
            return code;
        }catch (Exception e){
            ToastUtils.toastForShort(context,context.getString(R.string.analysis_error));
            return code ;
        }
    }
    public BaseOneBean dealBaseOneRes(Context context, Response<String> response){
        String res=response.body().toString().trim();
        if(TextUtils.isEmpty(res)){
            ToastUtils.toastForShort(context,context.getString(R.string.empty_datas));
            return null ;
        }
        try {

            BaseOneBean bean=new Gson().fromJson(res,BaseOneBean.class);
            return bean;
        }catch (Exception e){
            ToastUtils.toastForShort(context,context.getString(R.string.analysis_error));
            return null ;
        }
    }

    /**
     * basicbean只解析减单数据
     * @param context
     * @param response
     * @return
     */
    public BasicBean dealBasic(Context context, Response<String> response){
        String res=response.body().toString().trim();
        if(TextUtils.isEmpty(res)){
            ToastUtils.toastForShort(context,context.getString(R.string.empty_datas));
            return null ;
        }
        try {
            BasicBean bean=new Gson().fromJson(res,BasicBean.class);
            if(bean.getStatus()==Constant.SUCESS){
                return bean;
            }else{
                ToastUtils.toastForShort(context,bean.getMsg());
                return  null;
            }
        }catch (Exception e){
            ToastUtils.toastForShort(context,context.getString(R.string.analysis_error));
            return null ;
        }
    }


//    /**
//     *签到
//     * @param context
//     * @param response
//     * @param type
//     * @param <T>
//     * @return
//     */
//    public <T> List<T> dealSign(Context context, Response<String> response, Type type){
//        List<T>  datas=new ArrayList<>();
//        String res=response.body().toString().trim();
//        if(TextUtils.isEmpty(res)){
//            ToastUtils.toastForShort(context,context.getString(R.string.empty_datas));
//            return datas;
//        }
//        try {
//            BaseBean<T> bean=new Gson().fromJson(res,type);
//            if(bean.getStatus()== Constant.SUCESS){
//                datas.addAll(bean.getData());
//                if(datas.isEmpty()){
//
//                }
//                return datas;
//            }else{
//                ToastUtils.toastForShort(context,bean.getMsg());
//                return datas;
//            }
//        }catch (Exception e){
//            ToastUtils.toastForShort(context,context.getString(R.string.analysis_error));
//            e.printStackTrace();
//            return datas;
//        }
//    }

}
